package net.ericaro.neojavagengen;

import net.ericaro.neojavagen.names.QualifiedIdentifier;
import net.ericaro.neojavagen.packages.CompilationUnit;
import net.ericaro.neojavagen.types.ClassOrInterfaceType;
import net.ericaro.neojavagen.types.Identifier;
import net.ericaro.neojavagen.types.InterfaceType;

public interface Part {

	/** called after every part has been instantiated, and linked to the ReferencePart, in order to follow dependency for generation purpose.
	 * This method is called lazily by the ReferencePart itself.
	 * 
	 * 
	 */
	void resolve();

	
	Identifier getSimpleTypeName();

	ClassOrInterfaceType getClassOrInterfaceType();

	QualifiedIdentifier getQualifiedPackageName();

	CompilationUnit getCompilationUnit();

	void addInterfaceType(InterfaceType classOrInterfaceType);

}
